#ifndef KNOWLEDGE_H
#define KNOWLEDGE_H

#include <QList>
#include "environmentalknowledge.h"
#include "socialknowledge.h"
#include "meansknowledge.h"

namespace IAlib
{
    class KnowledgeBase
    {
    public:
        KnowledgeBase();
        KnowledgeBase( const KnowledgeBase& knowledge);

        void addEnvironmentalKnowledge(const EnvironmentalKnowledge& kw);
        void addSocialKnowledge(const SocialKnowledge& kw);
        void addMeansKnowledge(const MeansKnowledge& kw);

        QList<EnvironmentalKnowledge> getEnvironmentalKnowledge() const { return m_environmental_knowledge; }
        QList<SocialKnowledge>        getSocialKnowledge() const { return m_social_knowledge; }
        QList<MeansKnowledge>         getMeansKnowledge() const  { return m_means_knowledge; }

        void removeEnvironmentalKnowledge(const QString & id);
        void removeSocialKnowledge(const QString & id);
        void removeMeansKnowledge(const QString& id);



    private:

        QList<EnvironmentalKnowledge> m_environmental_knowledge;
        QList<SocialKnowledge>        m_social_knowledge;
        QList<MeansKnowledge>         m_means_knowledge;
    };
}

#endif // KNOWLEDGE_H
